package XML;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

import Reproductor.Cancion;

public abstract class CargadoXML {

	 /**
	  * Declaracion de atributos de la clase CargadoXML
	  */
	//archivo.b10
	private static SAXBuilder builder; 
	//private InputSource path;
	private static Document doc;

	/**
	 * Abre una biblioteca para su posterior uso.
	 * 
     * @param path: Ruta donde se encuentra la biblioteca que se desea abrir.
     * @exception JDOMException: No se puede parsear.
     * @exception IOException : No se encuentra el archivo.
     */
	public static void abrirLectura(String path) throws JDOMException, IOException{
	    builder=new SAXBuilder(false);
	    doc= builder.build(path);
	}

	 /**
	  * Carga las canciones de una biblioteca a partir de su ruta.
	  * 
	  * @param path: Ruta de la biblioteca.
	  * @return : Lista de las canciones que contiene la biblioteca.
	  */
	public static ArrayList<Cancion> cargarBiblioteca(String path){
		ArrayList<Cancion> listaCanciones = new ArrayList<Cancion>();
		
	    try {
	    	abrirLectura(path);
	    	//Extraemos el nodo raiz(biblioteca)
	        Element raiz= doc.getRootElement();
	        //Extraemos los hijos de la raiz (canciones)
	        List cancion=raiz.getChildren("Cancion");
	        //Con un iterador recorremos cada unos de los nodos
	        Iterator i= cancion.iterator();
	        while(i.hasNext()){

	            Element e= (Element)i.next();
	            Element titulo=e.getChild("Titulo");
	            Element autor= e.getChild("Artista");
	            Element album= e.getChild("Album");
	            Element formato= e.getChild("Formato");
	            Element numero= e.getChild("Numero");
	            Element pathCancion= e.getChild("Path");
	            Element duracion= e.getChild("Duracion");
	             
	            
	            Cancion c = new Cancion();
	            c.setTitulo(titulo.getText());
	            c.setArtista(autor.getText());
	            c.setAlbum(album.getText());
	            c.setFormato(formato.getText());
	            c.setNumero(numero.getText());
	            c.setPath(pathCancion.getText());
	            
	            try {
					c.setDireccion(new URL("file:///"+pathCancion.getText()));
				} catch (MalformedURLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}	  
				
				/*
				if(duracion.getText())
					c.setDuracion(Integer.valueOf(duracion.getText())); 
	            else
	            	c.setDuracion(0);
				*/
				
				//Comprobar si existe el fichero
				File fichero = new File(pathCancion.getText());
				if(fichero.exists())
					listaCanciones.add(c);
				
	        }
	        
		} catch (JDOMException e2) {
			System.out.print("No se pudo parsear");
		} catch (IOException e2) {
			// TODO Auto-generated catch block
			System.out.print("No se encontrar el fichero");
		}	        
	    return listaCanciones;

	}
	
	
	 /**
	  * @param args: Array de argumentos.
	  */
	public static void main(String[] args) {
		ArrayList<Cancion> biblio=CargadoXML.cargarBiblioteca("biblio.b10");
		biblio.size();
	}
	
}

